package com.ruipengkj.component.jtree;

import java.io.File;
import java.util.Vector;

import javax.swing.Icon;
import javax.swing.filechooser.FileSystemView;

public class JTreeTDeptNode implements JTreeNode{
	private File file;
	private static FileSystemView fileView;
	private Vector<File> folder = new Vector<File>();

	public JTreeTDeptNode() {
		this.fileView = FileSystemView.getFileSystemView();
		this.file = fileView.getHomeDirectory();
		this.fillFile();
	}

	private JTreeTDeptNode(File file) {
		this.file = file;
		this.fillFile();
	}

	// 返回父节点的子数组中索引 index 位置的 parent 的子节点。
	public JTreeTDeptNode getChild(int index) {
		return new JTreeTDeptNode(folder.get(index));
	}

	// 返回 parent 的子节点数。
	public int getChildCount() {
		return folder.size();
	}

	// 返回父节点中子节点的索引。
	public int getIndexOfChild(Object child) {
		return folder.indexOf(((JTreeTDeptNode) child).file);
	}

	// 如果 node 为叶节点，则返回 true。
	public boolean isLeaf() {
		return folder.size() == 0;
	}

	public String toString() {
		return fileView.getSystemDisplayName(file);
	}

	// 遍历路径文件，将它添加到数组中
	public void fillFile() {
		File[] files = fileView.getFiles(file, true);
		for (int i = 0; i < files.length; i++) {
			if (!files[i].isFile()&& !files[i].toString().toLowerCase().endsWith(".lnk")) {
				folder.add(files[i]);
			}
		}
	}

	public Icon getIcon() {
		return fileView.getSystemIcon(this.file);
	}
}
